package handlers

import (
	"cron-go/internal/pkg/crontab/models"

	"github.com/go-liam/util/conv"
)

func ChangeTaskModelToResp(m *models.TaskMysqlModel) *TaskModelResp {
	r := new(TaskModelResp)
	if m == nil {
		return r
	}
	r.Command = m.Command
	r.Config = conv.StringToInterface(m.Config)
	r.CreatedAt = m.CreatedAt
	r.DoStatus = m.DoStatus
	r.ID = conv.Int64ToString(m.ID)
	r.IsNotify = m.IsNotify
	r.Label = m.Label
	r.Name = m.Name
	//r.NextRunTime = task.NextRunTime()
	r.Spec = m.Spec
	r.WorkerType = m.WorkerType
	r.NotifyConfig = conv.StringToInterface(m.NotifyConfig)
	r.Label = conv.StringToInterface(m.Label)
	return r
}

type TaskModelResp struct {
	ID           string      `json:"id"  `           // 任务ID
	Spec         string      `json:"spec"  `         // crontab
	CreatedAt    int64       `json:"createdAt" `     // 时间
	UpdatedAt    int64       `json:"updatedAt" `     // 更新时间
	Name         string      `json:"name" `          // 任务名称
	Status       int8        `json:"status" `        // 状态 1:正常 0:停止
	Command      string      `json:"command" `       // 执行的命令
	Config       interface{} `json:"config" `        // 简单配置 {type:""}
	NotifyStatus int8        `json:"notifyStatus" `  // 执行状态 0 没执行 , 1执行成功，2 执行中 ,3 失败
	IsNotify     int8        `json:"isNotify" `      // 任务执行结束是否通知 0: 不通知 1: 通知
	NotifyConfig interface{} `json:"notifyConfig"  ` // 通知接受者json{type:, [{name:xxx,key:xxx}]}
	WorkerType   int         `json:"workerType" `    // 执行器ID ，0 为不要worker
	Label        interface{} `json:"label" `         // 标签
	DoStatus     int8        `json:"doStatus" `      // 执行状态 0 没执行 , 1执行成功，2 执行中 ,3 失败
	DoUpdatedAt  int64       `json:"doUpdatedAt" `   // 执行更新时间
	//NextRunTime  int         `json:"next_run_time"  ` //下次时间
}
